﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlServerCe;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace TVLNameGenerator__L5A_Edition_
{
    public partial class Main : Form
    {
        public Main()
        {
            InitializeComponent();
        }

        private void Main_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'l5ANameDataSet.Nombres' Puede moverla o quitarla según sea necesario.
            this.nombresTableAdapter.Fill(this.l5ANameDataSet.Nombres);
            // TODO: esta línea de código carga datos en la tabla 'l5ANameDataSet.Apellidos' Puede moverla o quitarla según sea necesario.
            this.apellidosTableAdapter.Fill(this.l5ANameDataSet.Apellidos);

        }

        private void rBMacho_CheckedChanged(object sender, EventArgs e)
        {
            if (rBMacho.Checked)
            {
                nombresBindingSource.Filter = "[Sexo]='M'";
            }
            else
            {
                nombresBindingSource.Filter = "[Sexo]='H'";
            }
        }

        private void rBNada_CheckedChanged(object sender, EventArgs e)
        {
            if (rBNada.Checked)
            {
                cBNombre.Enabled = false;
                cBApellido.Enabled = false;
            }
        }

        private void rbNombre_CheckedChanged(object sender, EventArgs e)
        {
            if (rbNombre.Checked)
            {
                cBNombre.Enabled = true;
                cBApellido.Enabled = false;
            }
        }

        private void rBApellido_CheckedChanged(object sender, EventArgs e)
        {
            if (rBApellido.Checked)
            {
                cBNombre.Enabled = false;
                cBApellido.Enabled = true;
            }
        }

        private void btnGenerar_Click(object sender, EventArgs e)
        {
            
            string cadena = Properties.Settings.Default.L5ANameConnectionString;

            SqlCeConnection conn = new SqlCeConnection(cadena);
            
            //SqlCeConnection conn = new SqlCeConnection("Data Source=L5AName.sdf;");
            
            SqlCeCommand cmd = new SqlCeCommand();
            conn.Open();
            if(rbNombre.Checked)//solo generar apellido
            {

                cmd.CommandText = "SELECT TOP (1) [Apellido] FROM [Apellidos] ORDER BY NEWID()";
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;
                SqlCeResultSet rs = cmd.ExecuteResultSet(
                  ResultSetOptions.Scrollable);
                rs.ReadFirst();
                dstApellido.Text = rs.GetString(0);
                dstApellido.Visible = true;
                dstNombre.Text = cBNombre.Text;
                dstNombre.Visible = true;
            }
            else if(rBApellido.Checked)//solo generar nombre
            {
                if(rBMacho.Checked)
                {

                    cmd.CommandText = "SELECT TOP (1) [Nombre] FROM [Nombres] WHERE [Sexo]='M' ORDER BY NEWID()";
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.Text;
                    SqlCeResultSet rs = cmd.ExecuteResultSet(
                      ResultSetOptions.Scrollable);
                    rs.ReadFirst();
                    dstNombre.Text = rs.GetString(0);
                    dstNombre.Visible = true;
                    dstApellido.Text = cBApellido.Text;
                    dstApellido.Visible = true;
                }
                else
                {

                    cmd.CommandText = "SELECT TOP (1) [Nombre] FROM [Nombres] WHERE [Sexo]='H' ORDER BY NEWID()";
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.Text;
                    SqlCeResultSet rs = cmd.ExecuteResultSet(
                      ResultSetOptions.Scrollable);
                    rs.ReadFirst();
                    dstNombre.Text = rs.GetString(0);
                    dstNombre.Visible = true;
                    dstApellido.Text = cBApellido.Text;
                    dstApellido.Visible = true;
                }
            }
            else//generar ambos
            {
                if (rBMacho.Checked)
                {

                    cmd.CommandText = "SELECT TOP (1) [Nombre] FROM [Nombres] WHERE [Sexo]='M' ORDER BY NEWID()";
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.Text;
                    SqlCeResultSet rs = cmd.ExecuteResultSet(
                      ResultSetOptions.Scrollable);
                    rs.ReadFirst();
                    dstNombre.Text = rs.GetString(0);
                    dstNombre.Visible = true;
                    cmd.CommandText = "SELECT TOP (1) [Apellido] FROM [Apellidos] ORDER BY NEWID()";
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.Text;
                    rs = cmd.ExecuteResultSet(ResultSetOptions.Scrollable);
                    rs.ReadFirst();
                    dstApellido.Text = rs.GetString(0);
                    dstApellido.Visible = true;
                }
                else
                {

                    cmd.CommandText = "SELECT TOP (1) [Nombre] FROM [Nombres] WHERE [Sexo]='H' ORDER BY NEWID()";
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.Text;
                    SqlCeResultSet rs = cmd.ExecuteResultSet(
                      ResultSetOptions.Scrollable);
                    rs.ReadFirst();
                    dstNombre.Text = rs.GetString(0);
                    dstNombre.Visible = true;
                    cmd.CommandText = "SELECT TOP (1) [Apellido] FROM [Apellidos] ORDER BY NEWID()";
                    cmd.Connection = conn;
                    cmd.CommandType = CommandType.Text;
                    rs = cmd.ExecuteResultSet(ResultSetOptions.Scrollable);
                    rs.ReadFirst();
                    dstApellido.Text = rs.GetString(0);
                    dstApellido.Visible = true;
                }

            }
            conn.Close();
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void editarBDToolStripMenuItem_Click(object sender, EventArgs e)
        {
            EditarBD nuevo = new EditarBD();
            nuevo.ShowDialog(this);
            // TODO: esta línea de código carga datos en la tabla 'l5ANameDataSet.Nombres' Puede moverla o quitarla según sea necesario.
            this.nombresTableAdapter.Fill(this.l5ANameDataSet.Nombres);
            // TODO: esta línea de código carga datos en la tabla 'l5ANameDataSet.Apellidos' Puede moverla o quitarla según sea necesario.
            this.apellidosTableAdapter.Fill(this.l5ANameDataSet.Apellidos);
        }

        private void reloadDBToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'l5ANameDataSet.Nombres' Puede moverla o quitarla según sea necesario.
            this.nombresTableAdapter.Fill(this.l5ANameDataSet.Nombres);
            // TODO: esta línea de código carga datos en la tabla 'l5ANameDataSet.Apellidos' Puede moverla o quitarla según sea necesario.
            this.apellidosTableAdapter.Fill(this.l5ANameDataSet.Apellidos);

        }
    }
}
